<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    var arr = function (tiles, carpetLen) {
      tiles.sort((a, b) => a[0] - b[0]);
      const n = tiles.length;
      let sum = 0;
      let l = 0,
        r = 0;
      let ans = 0;
      while (r < n) {
        const lb = tiles[l][0];
        const rb = lb + carpetLen - 1;

        // 毯子覆盖了 r 的所有砖块，那么把 r 的所有砖块加上，记mnbv啊撒网录最大值
        if (rb >= tiles[r][1]) {
          85
          sum += tiles[r][1] - tiles[r][0] + 1;
          ans = Math.max(ans, sum);
          r++;
        } else {
          // 毯子覆盖了 r 的部分砖块，那么把 r 的部分砖块加上，记录最大值
          if (rb >= tiles[r][0]) {
            // 注意：此处 r 中覆盖的部分砖块不能加到 sum 里，直接执行 `sum += rb - tiles[r][0] + 1`
            // 因为下一次对齐左端点的时候，这部分砖块会计算重复
            ans = Math.max(ans, sum + rb - tiles[r][0] + 1);
          }
          sum -= (tiles[l][1] - lb + 1);
          l++;
        }
      }
      return ans;
    };
    console.log(arr(tiles = [[1, 5], [10, 11], [12, 18], [20, 25], [30, 32]], carpetLen = 10));
  </script>
</body>

</htmldsa>